home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / lxlt121.zip / lxLite / doc / lxLite_de.txt < prev    next >
Text File  |  1996-12-01  |  32KB  |  619 lines

  1.             ----------------------------------------------------
  2.              lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
  3.             ----------------------------------------------------
  4.  
  5.                                      Widmung: Meiner kleinen Tochter Alice,
  6.                                           geboren am 12 Feb, 1996 um 03:45.
  7.  
  8. 0. Version der deutschen Dokumentation
  9. --------------------------------------
  10.  
  11.    Die  deutsche Uebersetzung basiert auf der  englischen  Dokumentation zu
  12. lxLite 1.1.5.
  13.  
  14. 1. Distribution
  15. ---------------
  16.  
  17.    Dieses Programm  ist Freeware.  Das heisst,  man kann es verbreiten, wie
  18. man will,  ausser fuer den kommerziellen  Gebrauch. Kommerzielle Verwendung
  19. ist  nur  mit  meiner  ausdruecklichen  Zustimmung  erlaubt.  Wie  man mich
  20. kontaktieren kann ist in der letzten Sektion dieser Datei zu sehen.
  21.  
  22.    Freeware heisst aber auch, dass es keinerlei Garantie fuer das gibt, was
  23. das Programm  macht,  ob  es das macht  was man erwartet,  ob es ueberhaupt
  24. etwas  macht.  Ich  uebernehme  keinerlei  Verantwortung  fuer  irgendeinen
  25. Schaden,  entgangene Profite etc.,  die durch Fehler dieses Programms (oder
  26. der Uebersetzung der Dokumentation) verursacht werden.
  27.  
  28.    Wie auch  immer,  es  ist erlaubt,  das Programm  dazu  zu verwenden, um
  29. jedes, auch jedes kommerzielle Produkt zu verbessern. Und zwar nicht um den
  30. eigenen  Vorteil,  sondern um  den Vorteil aller armen User,  die  sich mit
  31. riesigen Programmdateien herumaergern muessen.
  32.  
  33.    Das  Programm  ist ausschliesslich  in  Virtual  Pascal  1.0  Beta #003,
  34. geschrieben, vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
  35. ist eine excellente Sprache,  die alle Vorteile und Moeglichkeiten von OS/2
  36. bedient und unterstuetzt,  gleichzeitig Borland Pascal kompatibel  ist, und
  37. einen maechtigen eingebauten Optimierer hat.
  38.  
  39.    Falls du den Source  Code von lxLite willst,  bitte wende  Dich an mich,
  40. aber  du  musst mir ganz  sagen WARUM du  ihn brauchst;  Leute,  die fremde
  41. Programme unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
  42.  
  43.  2. Einfuehrung
  44.  -------------
  45.  
  46.    Ich denke,  wir alle  sind recht  sauer ueber die gewaltige  Groesse die
  47. fast alle modernen Programme haben, die unter OS/2 laufen (fuer WinDOS gilt
  48. allerdings  das  gleiche),  ohne  oft  entscheidend  mehr  zu  koennen  als
  49. Programme frueherer  Zeiten.  Ich verstehe nicht,  warum sie so gross sind,
  50. weil die meisten Compiler,  sogar  IBM CSet  generieren  Code  in moderaten
  51. Groessen.
  52.  
  53.    Nehmen wir als Beispiel das allseits  bekannte MultiMaint.  Was um alles
  54. in der Welt macht das Ding in einer 700K grossen EXE-Datei? Ich verstehe es
  55. nicht.  Dazu kommt noch,  warum  wird  die beinahe  gleiche  EXE-Datei noch
  56. doppelt und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
  57. MultiMaint daherkommen).  Das Programm ist ja ganz nett und  es macht seine
  58. Arbeit ganz  gut,  aber  fuer  diese Arbeit  ist es einfach  zu gross. OS/2
  59. Kernel haben etwa  den gleichen  Umfang.  Wo ist da die  Relation? Ich kann
  60. (und will)  es mir einfach nicht leisten so  einen grossen Haufen  Mist auf
  61. meine Platte zu laden,  also habe ich MultiMaint & Co. wieder gekuebelt. Zu
  62. Dumm fuer deren Autoren.
  63.  
  64.    lxLite ist ein Workaround fuer dieses Problem.  Programmdateien kann man
  65. packen,  sie  nehmen dann nur noch  den halben  Platz ein,  und machen noch
  66. immer den glichen Job.  Dummerweise braucht es  auch den  gleichen Platz im
  67. Speicher - das ist die Schuld des Autors.
  68.  
  69.    Soviel ich  weiss,  gibt  es  fuer  OS/2  nur  ein  Programm,  das etwas
  70. Aehnliches macht REPACK von IBM (EWS?). Aber vergleichen mit lxLite erzeugt
  71. es  groessere Dateien,  obwohl  es den gleichen Algorithmus  verwendet. Zum
  72. Beispiel, COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
  73. lxLite aber in 34K  gepackt.  Spuer den Unterschied! BTW, LINK386+Ressource
  74. Compiler  compilieren COURIER.FON auch in  ein 44K-Datei.  Daher denke ich,
  75. dass das sie eine gemeinsame Library verwenden.
  76.  
  77.    Ich komprimierte  alle  meine Programmdateien (inklusive  aber nicht nur
  78. ?:\os2\*.exe,  ?:\os2\dll\*.*  und  ?:\os2\dll\ibmnull;laserjet)  und  mein
  79. System ist nach  wie vor stabil.  Ein  lxLite  Benutzer  (Pavel Roskin) hat
  80. festgestellt,  dass lxLite sogar os2krnl komprimiert:-)  Sehr  angenehm vor
  81. allem  fuer  eine  einzelne  Bootdiskette  [Anmerkung  d.  Uebersetzers: Es
  82. stimmt].
  83.  
  84. 3. Features
  85. -----------
  86.  
  87.    lxLite komprimiert die Dateien auf die  gleiche Art wie LINK386  es tut.
  88. Es gibt  keine andere  Moeglichkeit gepackte Programmdateien unter  OS/2 zu
  89. implementieren,  als die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
  90. So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
  91.  
  92.    1. Run-length packing.  Das ist im Prinzip die gleiche  Methode, wie sie
  93. Microsoft C fuer DOS verwendet.  Das Ergebnis ist sehr SCHLECHT, weils sich
  94. Programmdateien  nicht fuer  die  Pack-Methode  eignen.  Zum  Beispiel, PCX
  95. Dateien werden auf die gleiche Art gepackt.
  96.  
  97.    2. Eine Art Lempel-Ziv  Algorithmus.  Lempel-Ziv  ist  die  Methode, die
  98. beinahe  alle  DOS-EXE Packer  verwenden -  LZEXE,  PKLITE, PGMPAK etc. Die
  99. Methode  die fuer ausfuehrebare  OS/2  Dateien standardisiert ist, ist IMHO
  100. nicht  die effektivste.  Dazu  kommt noch,  dass OS/2-Programmdateien einen
  101. anderen    Ladealgorithmus   haben   als    DOS-EXE-Dateien,    Teile   von
  102. OS/2-Programmdateien koennen auch  nur geladen werden,  wenn  sie gebraucht
  103. werden.  Deshalb kann ein Lempel-Ziv Woerterbuch nicht ueber  eine einzelne
  104. Page (4096  Bytes)  hinausgehen.  Folglich sind die Resultate auch nicht so
  105. gut, wie sie theoretisch sein koennten.
  106.  
  107.    lxLite kann beide Methoden  verwenden,  sowohl zum Packen,  als auch zum
  108. Entpacken. Im Allgemeinen ergibt die zweite Methode die besseren Resultate,
  109. aber moeglicherweise (?) gibt es Dateien fuer die die erste besser ist. Aus
  110. diesem Grund werden defaultmaessig beide Methoden  angewendet,  die mit dem
  111. kleineren Ergebnis gewaehlt. lxLite kann auch benutzt werden, um Dateien zu
  112. entpacken,  die  bereits komprimiert sind,  sei es mit mit  lxLite, LINK386
  113. oder REPACK von IBM.
  114.  
  115.    Was fuer Dateien koennen nun mit lxLite  gepackt werden?  Das  LX Format
  116. wird unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format.
  117. Nicht  nur  EXE-Dateien,   sondern  auch  .DLL,  .PDR,  .QPR,  .DRV,  .FON,
  118. .SYS-Dateien  koennen mit lxLite  gepackt werden.  Sogar  die VDDs (Virtual
  119. Device Drivers)  in \OS2\MDOS koennen damit gepackt werden.  Praktisch kann
  120. man lxLite auf jedes Datei loslassen:  Wenn es kein LX ist,  wird lxLite es
  121. nicht anruehren.
  122.  
  123.    Es ist  also moeglich,  den ganzen \OS2\*\ zu komprimieren,  man bekommt
  124. jede Menge Extraplatz  ohne irgendwelchen  Overhead! Die Dekompressionszeit
  125. wird durch die verkuerzten Ladezeiten  der  verkleinerten  Dateien  von der
  126. Platte bei weitem  aufgewogen.  Also,  Reboot von einer Diskette (eventuell
  127. von  den  beiden  Installationsdisketten  und  dann  F3  waehlen,  dann das
  128. entsprechende  Laufwerk waehlen,  wo das installierte OS/2  liegt. Dann ist
  129. folgendes beim Command prompt einzugeben:
  130.  
  131.    \[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
  132.  
  133. und  so  weiter.   So  koennen  auch  die  Dateien,   welche  zur  Laufzeit
  134. normalerweise gesperrt (EXE,DLL) sind, problemlos gepackt werden.
  135.  
  136.   lxLite Version 1.00  und hoeher ist sogar in der Lage Dateien, die gerade
  137. benutzt werden,  zu packen. In diesem Fall kann warnt lxLite und fragt nach
  138. ob es das Modul auslassen oder durch seine gepackte Version  ersetzen soll.
  139. Grundsaetzlich  ist das ersetzen  auch  so  kein  Problem,  nur muss man im
  140. Hinterkopf behalten,  dass das Original bereits im  Speicher  sitzt, und so
  141. auch  jede  Menge Platz im  SWAPPER.DAT auffressen.  Ein  Reboot sobald wie
  142. moeglich ist daher immer eine gute Idee.
  143.  
  144.    Versionen  von  lxLite  ueber  1.00   gibt  es   in  zwei  verschiedenen
  145. EXE-Dateien:  lxLite.exe ist die normale Version fuer OS/2  v2.99, Warp und
  146. hoeher.  Die andere,  namens lxLite2x.exe  ist  fuer  die  aelteren  32 bit
  147. Versionen von OS/2 (i.e. 2.x, NICHT 1.x weil unter 1.x gab es das LX Format
  148. noch nicht). Als OS/2 Warp User kann man es getrost loeschen.
  149.  
  150.    Version 1.1.0  und Hoeher erkennen Programme, die Daten nach der eigent-
  151. lichen  LX-Struktur  stehen   (i.e.  was  auf  DOS  overlay  data  heisst).
  152. Watcom`s   gebundene Programme (wie WCC.EXE Versionen >=  10.0) und  Watcom
  153. Visual   Rexx   Programme haben so  eine  Struktur.  In diesem Fall erzeugt
  154. lxLite eine   Warnung und ersucht um Bestaetigung,  ob ein solches Programm
  155. wirklich gepackt werden soll.  Es ist SEHR empfehlenswert, dass zuerst eine
  156. Kopie   von diesem Programm gemacht wird,  bevor man es zu packen versucht,
  157. denn  die Chance,  dass es  danach  nicht mehr  geht,  ist  sehr  hoch. Das
  158. deshalb,  weil  lxLite (natuerlich)  keine (prinzipiell moeglichen) Pointer
  159. innerhalb des Programms,  die auf Daten,  die an das Programm gebunden sind
  160. (wie zum Beispiel VX-REXX Programme), veraendert.
  161.  
  162.  
  163.  
  164.  
  165. 4. Optionen
  166. -----------
  167.  
  168.    Es gibt jede Menge Optionen  in  lxLite.  Ich liebe Optionen einfach :-)
  169. Deshalb kann man bei lxLite beinahe alles und jedes  konfigurieren.  Um den
  170. User  vor allzuviel Konfiguration zu  schuetzen,  unterstuetzt  lxLite eine
  171. einzelne   Konfigurationsdatei,   in  der  gleich   einige  Konfigurationen
  172. mitgeliefert ('factory defaults') sind. Sie sind weiter unten aufgelistet:
  173. ---------------------------------------------------------------------------
  174.  
  175. DEFAULT (wird standardmaessig geladen): DEFAULT ist eine `Arbeitskonfigura-
  176.    tion'.  Alle  Parameter sind  auf maximale Kompression gesetzt.  Die Er-
  177.    zeugung  von  .BAK   Dateien  ist  abgeschaltet.   Beachte,  dass  diese
  178.    Konfiguration  IMMER geladen wird,  bevor  irgendwelche  andere Optionen
  179.    wirksam werden,  sogar  die /C{#} Option  wird  ausgefuehrt  NACHDEM die
  180.    DEFAULT- Konfiguration geladen Worten ist.
  181.  
  182. FAST:  Niedrigste  Kompressionsrate,  kuerzeste  Ladezeiten.  Wenn  man IBM
  183.    glaubt,  werden  Programmdateien  schneller  geladen,  wenn Datenobjekte
  184.    innerhalb der Datei an  Sektorgrenzen (512  Bytes)  ausgerichtet werden.
  185.    Ich  kann  eigentlich  keinen  Unterschied  feststellen,  daher:  Selber
  186.    ausprobieren!  Vorkomprimierte  Daten  werden  nicht  de-komprimiert und
  187.    wieder re-komprimiert.
  188.  
  189. FAST2:  Packt  ein bisschen  besser,  aber  langsamer.  Ladezeiten  sind so
  190.    schnell wie bei CFG#1.
  191.  
  192. VER2X: Optimal fuer pre-Warp Versionen von OS/2. Versionen vor Warp (3.0)
  193.   wissen nichts von der Lempel-Ziv (/EXEPACK:2)  Methode. Programme sollten
  194.    nicht  mit Lempel-Ziv  gepackt werden,  falls  die Moeglichkeit besteht,
  195.    dass sie unter OS/2 2.xx (ausser 2.99) laufen sollen.
  196.  
  197. FAILSAFE: Lempel-Ziv packen ist eingeschaltet. Ein fehlersichere Konfigura-
  198.    tion.  Alle Daten werden genau wie von LINK386 geschrieben, deshalb sind
  199.    die Dateien etwas groesser  als bei der DEFAULT-Konfiguration.  Nur fuer
  200.    WARP (oder hoeher) und 2.99!
  201.  
  202. MAX:  Beste Kompressionsrate. SEHR LANGSAM! Wird wohl selten gebraucht wer-
  203.    den.
  204.  
  205. NEWSTUB:  Das ist eine spezielle Konfiguration mit der man den  DOS-Stub in
  206.    LX  Programmen  durch  einen  anderen  ersetzen  kann,  ohne irgendetwas
  207.    anderen zu  veraendern.  Du musst einen Dateinamen  fuer  den neuen Stub
  208.    angeben -  diese Konfiguration teilt lxLite mit,  dass es alte, gepackte
  209.    Objekte nicht entpackt und unkomprimierte Objekte nicht packt.
  210.  
  211. MINSTUB:  Diese Konfiguration ist mit NEWSTUB verbunden  und  ersetzt durch
  212.    den kleinstmoeglichen Stub  vom Typ `say-error-and-exit`.  Kleiner gehts
  213.    nimmer (glaub ich zumindest), ausser du kuerzt die Fehlermeldung.
  214.  
  215. VDMSTUB:  Diese Konfiguration befiehlt lxLite, den vorgefundenen Stub durch
  216.    einen`run-from-VDM`-Type  zu  ersetzen.  Dieser ist  auch  so  kurz, wie
  217.    moeglich:-).  Bitte  die  Beschreibung  der  /T{#}  Option  fuer weitere
  218.    Details durchlesen.
  219.  
  220. INFO:   Diese  Konfiguration  verwenden,  um  an  Informationen  ueber  die
  221.    Programmdatei zu erhalten  ohne es neu zu  schreiben (siehe  auch Option
  222.    /V+)
  223.  
  224. ---------------------------------------------------------------------------
  225.  
  226. Um eine  spezifische Konfiguration zu  verwenden,  ist lxLite  mit  /C# als
  227. Parameter aufzurufen,  wobei # der Name der Konfiguration ist. Die Einstel-
  228. lungen sind in der Datei lxLite.CFG  im  gleichen Verzeichnis,  in dem sich
  229. lxLite.EXE befindet.  Kuemmere dich nicht  um Pfade,  lxLite wird sein .CFG
  230. schon  finden.  Beispiel:  Um die Konfiguration `max` zu  verwenden, starte
  231. lxLite /cMax.
  232.  
  233. Fuer eine detailierte  Beschreibung des .CFG-Dateiformats,  lies die ueber-
  234. naechste Sektion.
  235.  
  236. Nun kommt eine detaillierte Erklaerung  darueber was  jeder einzelne Switch
  237. tut. Jeder Switch, der das '+'- oder '-'-Zeichen akzeptiert (um Aktion ein-
  238. oder auszuschalten)  kann auch ohne Zeichen benutzt werden, das heisst dann
  239. halt '+'. Das heisst z.B., /V+ ist gleich wie /V.
  240.  
  241. /A{P|S|N{P|S}}
  242.    setzt  die  Ausrichtungsmethode  (Alignment)  fuer  das  erste  und  die
  243.    weiteren Objekte.  Das erste Objekt kann man auf  [P]age shift, [S]ector
  244.    oder [N]o boundary ausrichten.  Die letzte Option (No boundary) wird von
  245.    LINK386 niemals benutzt, aber es funktioniert, und das LX Format erlaubt
  246.    es.  Alle  Objekte ausser  dem ersten  MUeSSEN  zumindest  auf PageShift
  247.    boundary  ausgerichtet  sein.  PageShift ist ein Wert,  der im LX Header
  248.    spezifiziert  ist. Um ihn neu zu definieren, verwende die /R# Option.
  249.  
  250. /B{+|-}
  251.    Das Umbenennen der Originaldatei in .BAK ein-  (+) oder ausschalten (-).
  252.    Beachte bitte,  dass  das eine  BETA-Version  ist  -  deshalb  sind .BAK
  253.    Dateien standardmaessig eingeschaltet.
  254.  
  255. /C{#}
  256.    Verwenden  der  Konfiguration  mit  ID  =  #.  Die  zwei  vordefinierten
  257.    Konfigurationsnamen sind  "DEFAULT"  und "UNPACK".  Die Erste wird immer
  258.    geladen,  wenn lxLite startet und die  Zweite wird benutzt wenn  die /X+
  259.    Option angegeben wird (NICHT gleichbedeutend mit /cUnpack).
  260.  
  261. /D{#}
  262.    Ausschliessen[D]e Dateimaske.  Alle Dateien die zu einer der angegebenen
  263.    Dateimasken passen,  werden  von  lxLite  uebergangen.  Alle Dateimasken
  264.    muessen durch Doppelpunkte  (:)  voneinander  getrennt sein (weil  ein :
  265.    nicht Teil einer Maske sein kann). Zum Beispiel wird /D*.zip:*.arj:*.rar
  266.    lxLite  daran  hindern  .zip,  .arj  and  .rar  Dateien  zu  bearbeiten.
  267.    Standardmaessig (/Cdefault)  enthaelt eine Liste aller Progreammdateien,
  268.    von denen bekannt ist,  dass  sie nicht richtig gepackt  werden koennen.
  269.    Mehrere  /D-Switches  hintereinander  werden addiert,  daher ist /D*.zip
  270.    /D*.arj  /D*.rar das gleiche wie das obige  Beispiel.  Um  die  Liste zu
  271.    loeschen ist einfach /D zu verwenden.
  272.  
  273. /F{+|-}
  274.    Erzwungenes  repacking.  Ist  zu  verwenden  um  die  Meldung   `already
  275.    processed` zu uebergehen, i.e.  wenn lxLite denkt, dass die  Datei schon
  276.    bearbeitet wurde,  das aber  in  Wirklichkeit  nicht der  Fall  war. Das
  277.    passiert  normalerweise nicht,  kann  aber passieren,  wenn man versucht
  278.    einen Stub durch einen anderen Stub  derselben Groesse zu  ersetzen, und
  279.    zwar bei einer bereits komprimierten Datei.
  280.  
  281. /G[X|D|S]{#}
  282.    e[X]tra /  [D]ebug  /  [S]tub Daten werden  in  die  spezifizierte Datei
  283.    [G]eschrieben.  Wenn lxLite  eine  LX  Datei  findet,  die  solche Daten
  284.    enthaelt,   und   man  diese  Daten verwerfen (oder  ersetzen  bei einem
  285.    Stub)  will,  wird lxLite sie in die spezifizierte Datei  stellen, bevor
  286.    sie verworfen werden. Die {#} Komponente kann auch eine Dateimaske sein,
  287.    sodass  man Daten in  Dateien mit demseleben  Namen,  aber einem anderen
  288.    Extender schreiben kann. Zum Beispiel /GD*.dbg teilt lxLite mit, dass es
  289.    zu verwerfende Debug-Informationen in  Dateien mit demselben  Namen aber
  290.    der Endung ".dbg" schreiben soll; der switch /GS*.stub.$s$ auf die Datei
  291.    "myfile.exe"  schreibt den Stub  in  die Datei  "myfile.stub.$s$". Siehe
  292.    auch die /O Option.
  293.  
  294. /I{+|-}
  295.    Zwingt (+)  lxLite dazu,  mit Idle Prioritaet zu laufen.  Das heisst, es
  296.    arbeitet nur,  wenn keine andere Aktivitaet im System herrscht  (d.h. es
  297.    wartet auf  Tasten und Mausbewegungen).  Das ist meiner Meinung  nach am
  298.    besten,  da lxLite  so  im  Hintergrund laufen kann und  die Performance
  299.    beinahe  ueberhaupt  nicht beeinflusst.  Nur  wenn  man  eine ungezogene
  300.    DOS-Box laufen  hat,  die sich  alle  CPU-Zeit  schnappt,  bleibt lxLite
  301.    stehen.  Wenn  lxLite  nun  mit  /I-  gestartet  wird  aendert  es seine
  302.    Prioritaet  nicht auf Idle,  und  daher mit einer  bestimmten Prioritaet
  303.    (z.B. via PRIORITY.EXE) gestartet werden.
  304.  
  305. /L{#}
  306.    Instruirt lxLite ein Logfile anzulegen. Es enthaelt nur die Dateien, die
  307.    lxLite auch bearbeitet, uebergangene Dateien werden hier nicht aufgenom-
  308.    men.  wenn kein  Name angegeben  ist,  wird lxLite.log im Verzeichnis in
  309.    dem sich auch lxLite.exe befindet  verwendet.  Neben dem Dateinamen wird
  310.    die Anfangs- und Endgroesse und die Probleme (falls welche auftraten).
  311.  
  312. /M{R{N|1|2|3}|L{N|1}}
  313.    Setzt  die  Kompressionsmethode  und  -parameter.   Das  zweite  Zeichen
  314.    definiert  die  Methode,  die  verwendet  werden  soll:  `R`  steht fuer
  315.    Run-Length (/EXEPACK:1) und 'L' fuer Lempel-Ziv (/EXEPACK:2). Das dritte
  316.    Zeichen ist der Kompressionslevel,  der mit der  Methode erreicht werden
  317.    soll;  Falls N spezifiziert  wird,  ist  die Methode  abgeschaltet. Drei
  318.    Levels  gibt  es fuer die   Run-Length-Kompression.  Der Level 1 ist der
  319.    schnellste.  Er  sucht nur nach  1-Zeichen  Strings.  Zum  Beispiel, ein
  320.    'AAAAAAAA'  String wird erkannt und zu   8, 1, 'A' gespeichert, waehrend
  321.    ein  'ABABABAB'  String unkomprimiert gespeichert wird.  Level 2 erkennt
  322.    Strings  jeder Laenge  bis   16  Zeichen.  Das Beispiel von oben wird zu
  323.    4,2,'AB'  kodiert.  Das ist  die  Standardeinstellung  fuer  die meisten
  324.    'Factory`-Konfigurationen.  Und als letztes, der dritte Level sucht nach
  325.    allen Strings   jeder Laenge bis zu  einen halben  Page-Laenge (= 2048).
  326.    Diese  Kompressionsmethode ist SEHR   langsam  und   ergibt selten echte
  327.    Ergebnisse,  man sollte sie nur verwenden wenn man sie wirklich braucht.
  328.    Der  Lempel-Ziv Algorithmus  kann nur entweder abgeschaltet  (/MLN) oder
  329.    eingeschaltet (/ML1)  sein. Wenn er eingeschaltet ist, sucht er nach al-
  330.    len Matches unter Verwendung einer ziemlich schnellen Hash-Tabelle, des-
  331.    halb gibts keinen Grund die Kompression abzustufen.
  332.  
  333. /O{X|D|S}{+|-}.
  334.    [O]utput e[X]tra/[D]ebug/[S]tub Daten immer (+)  oder nur wenn verworfen
  335.    (-).   Wenn es abgeschaltet ist (/O-,  Standard)  arbeitet der /G Switch
  336.    wie vorher,  i.e. Daten werden nur geschrieben, wenn sie in der Quellda-
  337.    tei verworfen werden sollen.   Wenn die /O+  Option benutzt wird, werden
  338.    die  Daten immer geschrieben (wenn die  entsprechende  Dateimaske  in /G
  339.    Option  angegeben wurde).  Falls {X|D|S} nicht angegeben  wird, gilt die
  340.    Option fuer allen Arten von Daten (Extra,Debug,Stub)  (i.e. /O+ schaltet
  341.    das Feature fuer alle X/D/S Daten ein, /O- schaltet es fuer alle ab).
  342.  
  343. /P{+|-}
  344.    Ein-  (+) oder ausschalten (-) einer Pause vor jeder Datei. Das Programm
  345.    zeigt den Namen der Datei,  die als naechstes gepackt  werden soll,  und
  346.    ermoeglich eine Auswahl,  ob sie bearbeitet oder in Ruhe gelassen werden
  347.    soll.
  348.  
  349. /Q
  350.    Alle  Konfigrationsoptionen abfragen.  Im  Prinzip  ist  das  ein buntes
  351.    Listing der lxLite.cfg Datei :-) Andere Optionen falls vorhanden, werden
  352.    ignoriert.
  353.  
  354. /R{#}
  355.    [R]e-align (ausrichten)  der Pages auf eine spezielle Boundary. (#) muss
  356.    eine Potenz von 2  sein.  Diese Option ist analog zu   LINK386`s /ALIGN:
  357.    Switch.  Viele  Programmierer kuemmern  sich  nicht darum,  dass das /A:
  358.    standardmaessig auf eine Boundary von  512  (ein Sektor) gesetzt ist und
  359.    richten jede  Page  der  ausfuehrbaren  Module  auf  512  Byte  aus. Das
  360.    Ergebnis ist ein  Haufen unbenutzter Platz  innerhalb der Programmdatei.
  361.    Man kann nun solche Dateien mit einer anderen /ALIGN: Option neu linken.
  362.    Standardmaessig ist /R:4.  Um lxLite  zu zwingen sich wie  LINK386, muss
  363.    man  /R:512 verwenden. Das ist equivalent zu /ASS :-) .
  364.  
  365. /S{+|-}
  366.    Zeigen (+)  oder nicht zeigen (-)  der aktuellen Konfiguration.  Das ist
  367.    ganz brauchbar,  um mal zu schauen welche Einstellungen in der CFG-Datei
  368.    gespeichert  sind,  besonders  bei  verketteten  Konfigurationen  (siehe
  369.    weiter   unten).     Beispiel:     lxLite   /CDEFAULT   /S   zeigt   die
  370.    standardmaessigen Einstellungen.
  371.  
  372. /T{#}
  373.    Die mit # spezifizierte Datei als neuen DOS-Stub verwenden. Ein DOS-Stub
  374.    ist eine  kleine  DOS-.EXE-Datei,  die in eine  OS/2`s LX-Datei gelinked
  375.    wird, damit das Programm eine Fehlermeldung ausgibt, wenn es von DOS aus
  376.    gestartet wird. Normalerweise sieht das etwa folgend aus:
  377.  
  378.    Dieses Programm laeuft nur unter OS/2
  379.  
  380.    Mit  lxLite   kommen   2   DOS-Stub-Programme   mit:   stub_min.bin  und
  381.    stub_vdm.bin.  Der  erste ist ein Standard-`Schreib geht nicht und Ende`
  382.    Typ,  aber er ist etwas kleiner als die ueblichen DOS-Stub-Programme die
  383.    von den ueblichen Linkern erzeugt werden.  Der zweite ist  ein Stub, der
  384.    eine  neue OS/2-Session startet und das Programm  daraus  startet. Falls
  385.    OS/2   nicht  gefunden  wird,  die  uebliche  Fehlermeldung  produziert.
  386.    Standardmaessig  laesst  stub_vdm.bin  OS/2  den  Sitzungstyp bestimmen.
  387.    Alternativ  dazuy,   kann  man  den  Sitzungstyp  auch  in  stub_vdm.bin
  388.    festlegen. Dafuer braucht man einen Hexeditor - man muss nach dem String
  389.    `SesType->' im Stub suchen und das Byte, das unmittelbar nach dem  Pfeil
  390.    kommt (->)  durch den gewuenschten Sitzungstype ersetzen, wobei folgende
  391.    Tabelle gilt:
  392.  
  393.           00 - OS/2 session manager determines type (default)
  394.           01 - OS/2 full-screen session
  395.           02 - OS/2 windowed session
  396.           03 - PM application
  397.           04 - VDM full-screen session
  398.           07 - VDM windowed session
  399.  
  400. /U{+|-}
  401.    Ein- (+) oder ausschalten (-) des Entpackens einer Datei vor dem Packen.
  402.    lxLite weiss wie man  beide  der  beschriebenen  Methoden  zum Entpacken
  403.    verwendet,  deshalb ist die Option  standardmaessig   ist eingeschaltet.
  404.    Ausschalten ist nur dann sinnvoll, wenn Zeit gespart werden soll.
  405.  
  406. /V{+|-}
  407.    Verbose  (zeigt  ein  ganzen  Haufen  Dateiinformationen)   Das  ist der
  408.    Schalter fuer Neugierige:-)  Mit /V+ zeigt lxLite ein paar Informationen
  409.    ueber  die bearbeitete Datei  an  (um  komplette  Information  ueber .LX
  410.    Dateien zu bekommen, rate ich jedem exeHdr.EXE aus dem OS/2 Programmer`s
  411.    Toolkit zu verwenden).
  412.  
  413. /W{+|-}
  414.    Ein- (+) oder ausschalten (-) ob das Ergebnis des Packens auf die Platte
  415.    geschrieben werden soll.   Standardmaessig ist es eingeschaltet (nona!),
  416.    aber du  kannst  es  ausschalten falls du  die  Informationen  ueber /V+
  417.    anschauen willst,  ohne die Datei neu zu packen und frisch zu schreiben.
  418.    Diese Option kann auch fuer debugging der Optionen nuetzlich sein.
  419.  
  420. /X{+|-}
  421.    e[X]pandieren   (+)  oder  Packen (-)  der uebergebenen Dateien.  Diesen
  422.    Switch  verwendet man,  um  Dateien zu  entpacken.  lxLite  kann  sowohl
  423.    Dateien, die es selbst komprimiert hat, als auch solche, die von anderen
  424.    Programmen  mit  den  Standardmethoden  gepackt  wurden.  (i.e. Resource
  425.    Compiler,  LINK386,  REPACK).  /X-  ist nicht identisch mit der /cUnpack
  426.    Option.
  427.  
  428. /Z{#}
  429.    Diese   Option  setzt   den   `threshold`  fuer  lxLite   und  hilft  so
  430.    festzustellen,  ob eine Stub ein `dummy`  ist oder ob er  eine spezielle
  431.    Funktion hat. Es gibt einige Programme (zum Beispiel, \os2\xdfloppy.exe)
  432.    die sowohl unter DOS als auch unter OS/2  laufen - in solchen Programmen
  433.    ist die DOS Executable in der   OS/2` LX als ein DOS stub implementiert.
  434.    Standardmaessig (wenn man einfach /Z  benutzt)  lxLite haelt jeden Stubs
  435.    der groesser als 1024 Bytes ist, fuer einen funktionellen, und daher hat
  436.    die  /T{#} Option auf diese keinen Effekt.
  437.  
  438. /?,/H
  439.    Zeigt eine  kurze Hilfe an.  Diese  ist ganz  brauchbar,  wenn man einen
  440.    Switch aus der ganzen Liste vergessen hat:-)
  441.  
  442. ---------------------------------------------------------------------------
  443. Das .CFG Dateiformat ist so  simpel wie  moeglich:  Es ist eine reine ASCII
  444. Textdatei,  welche mit jedem beliebigen Texteditor bearbeitet  werden kann.
  445. Jedes Zeichen nach einem Strichpunkt ';' wird ignoriert, i.e. damit koennen
  446. Kommentare in die Konfigurationsdatei eingesetzt werden:
  447.  
  448. ; Diese Zeile ist ein Kommentar
  449.  
  450. Jede  Zeile,  die mit  einem  Wort  und  einem  Doppelpunkt  beginnt (z.B.:
  451. "Wort:")  wird als einzelne Konfiguration behandelt. Das Wort identifiziert
  452. die Konfiguration.
  453.  
  454. Das ist ein Beispiel fuer einen Konfigurationseintrag:
  455.  
  456. FAILSAFE: /APP /B- /G+ /R4 /MR2 /ML1 /P- /U+ /V-
  457.  
  458. Wie man sieht stehen nach dem Doppelpunkt beliebige Switches,  wie  man sie
  459. auch in  der  Kommandozeile  nach  lxLite  schreiben  wuerde.  Rekursive /C
  460. Optionen  werden  nicht  ignoriert,  so  dass  man  mehrere Konfigurationen
  461. aneinander binden  kann,  aber die /C Option wird  als letztes verarbeitet,
  462. das heisst von zwei  ueberlappenden  Optionen wird nur die  letzte effektiv
  463. sein. Als Beispiel:
  464.  
  465. here: /app /b- /g+
  466. da  : /ass /b+ /p+ /chere
  467.  
  468. "lxLite /cda "  ist also gleichbedeutend mit "lxLite /app /b- /p+ /g+". Man
  469. beachte,  dass  lxLite  auch  weitere  Aufrufe  auf  dieselbe Konfiguration
  470. ignoriert,  um unendliche  Schleifen zu  vermeiden.  Das  bedeutet, "lxLite
  471. /cOne /" wird die `One` Konfiguration nur EINMAL laden.
  472.  
  473. 5. Fehlermeldungen
  474. ------------------
  475.  
  476.    Wie  die  allermeisten  normalen  Programme   erzeugt   lxLite  manchmal
  477. Fehlermeldungen :-)  Manche von Ihnen erscheinen  in aehnlichen Situationen
  478. haben aber  unterschiedliche  Ausloeser.  Hier  ist  eine  kurze  Liste der
  479. haeufigsten Fehler:
  480.  
  481.    * Invalid Konfiguration Datei format:
  482.      Ungueltiges Format der Konfigurationsdatei. Selbsterklaerend:-)
  483.  
  484.    * Error reading Konfiguration Datei:
  485.      Diese  Meldung wird  nur generiert,  wenn die Konfigurationsdatei phy-
  486.      sisch nicht lesbar ist. Das Programm erzeugt keine Fehlermeldung falls
  487.      die Konfigurationsdatei einfach fehlt.
  488.  
  489.    * Error writing Konfiguration Datei:
  490.      Fehler beim Schreiben der Konfigurationsdatei. Selbsterklaerend:-)
  491.  
  492.    * Error reading executable
  493.      Diese  Meldung wird  generiert,  wenn die Programmdatei physisch nicht
  494.      lesbar ist.
  495.  
  496.    * error writing executable
  497.      Diese Meldung wird  generiert,  wenn die Programmdatei  nicht mehr auf
  498.      die Platte geschrieben werden kann.  Das kann dann passieren, wenn auf
  499.      der Platte zuwenig Platz ist, lxLite selbst ueberprueft das nicht.
  500.  
  501.    * invalid executable file format
  502.      Die Datei ist nicht vom Format [L]inear  E[x]ecutable. Bei EXE-Dateien
  503.      kann  diese  Meldung  auftreten,  wenn  sie  im  alten,  '[N]ew  [E]xe
  504.      (bwhahaha)' Format sind oder eine DOS-EXE-Datei oder eine WinDOS- EXE-
  505.      Datei.
  506.  
  507.    * unsupported executable format revision
  508.      Diese Meldung wird  generiert (vielleicht:-),  wenn  die Programmdatei
  509.      eine andere Dateiformatrevision hat als 0.  Da OS/2 Warp normalerweise
  510.      nur mit Revision 0  arbeitet,  duerfte dieser Fehler normalerweise nie
  511.      auftreten.
  512.  
  513.    * invalid word/dword ordering in executable
  514.      Die Datei verwendet die 'little-endian' Byte order. Wahrscheinlich ist
  515.      sie nicht fuer eine Intel-Plattform-Maschine gedacht.
  516.  
  517.    * executable target ist an unsupported CPU type
  518.      Das kann passieren,  falls die Ziel CPU eine andere als  286, 386, 486
  519.      oder P5 ist.
  520.  
  521.    * executable target ist an unsupported OS
  522.      Das  heisst,  dass die Programmdatei nicht  fuer  OS/2  ist. WinDOS 95
  523.      verwendet ein aehnliches  Format,  aber  seine  Kennung  ist  nicht LX
  524.      sondern  LE,  daher  sollte  es  normalerweise  eine  'invalid format'
  525.      Meldung geben.
  526.  
  527.    * unknown entry bundle type in executable
  528.    * unknown page flags in executable
  529.    * invalid object page detected in executable
  530.     Diese alle bedeuten, dass lxLite etwas ueber die interne Struktur nicht
  531.      versteht.  Ich bitte um Benachrichtigung,  falls jemand Dateien findet
  532.      bei denen diese Fehlermeldungen auftreten.
  533.  
  534.    * nicht enough memory to load executable
  535.      Ich glaube nicht, dass dieser Fehler unter OS/2 auftreten kann:-) Eher
  536.      wird  eine  'Kein Platz mehr  im SWAPPER.DAT'  Meldung auftauchen. Wie
  537.      auch immer,  ich finde,  es war keine gute Idee  der IBM-Programmierer
  538.      einen Fehler zu erzeugen,  statt auf die Speicheranfrage einfach einen
  539.      NIL-Pointer zurueckzugeben:-(
  540.  
  541. 6. To-do-Liste
  542. --------------
  543.  
  544.    Das ist eine Liste aller Features,  die plane  in zukuenftigen Versionen
  545. einzubauen.  Jede Anregung  ist willkommen,  wie  man mich  erreicht, siehe
  546. letztes Kapitel.
  547.  
  548.  * Vielleicht eine  Moeglichkeit,  den  LX  Stub  in  VX-REXX Programmen zu
  549.    packen; Ich weiss nur nicht obs wirklich gebraucht wird, der Unterschied
  550.    in der Groesse macht gerade mal 18K aus - lxLite kann das echte Programm
  551.    nicht packen,  da es   1.)  ausserhalb der LX-Struktur ist 2.) irgendwie
  552.    verschluesselt ist und  solche  Daten  ueberhaupt  nicht  gepackt werden
  553.    koennen, PKZIP nicht einmal PKZIP kann das.
  554.  
  555.  * Vielleicht eine  'extra-pack'-Option,  ich haette da eine  Idee, wie man
  556.    Programmedateien  wirklich  klein kriegt (kleiner als  DOS-Packer jeden-
  557.    falls:-);  diese  Programme  wuerden  dann  aber  nicht  so  wie ueblich
  558.    arbeiten -  sie waeren immer 'unlocked'  (siehe auch das UNLOCK-Utility)
  559.    i.e.  sie werden im Swapfile landen,  wenn nicht genaug Speicher da ist,
  560.    sie werden nicht langsamer,  aber das Swapfile wuerde dramtisch wachsen,
  561.    wenn so  ein Programm  gestartet wuerde.  Daher,  sagt mir ob  ihr sowas
  562.    haben wollt, wenns genug Nachfrage gibt, mache ich es.
  563.  
  564. 7. Bekannte Fehler und Einschraenkungen
  565. --------------------------------------
  566.  
  567.    Hier ist eine Liste von Programmen, die sich aus irgendeinem Grund nicht
  568. packen lassen, probieren sinnlos:
  569.  
  570.    * PMJPEG v1.5 bis 1.74. Wie auch immer, sogar IBM`s REPACK kann es nicht
  571. packen,  ich denke,  dass  es  sich  entweder  um einen Bug  im Linker, der
  572. benutzt  wurde,  um  es  zu  generieren  (die  ganze EXE hat  eine seltsame
  573. Struktur) oder eine Art debug-Schutz (Pruefsummen?).
  574.  
  575.    * VX-REXX-Programme.   Der Hauptteil des  Programms  (der verschluesslte
  576. REXX-Code)   wird  einfach  an  einen  kleinen  LX-Stub  angehaengt.  Diese
  577. Programme  haben  eine  unbekannte  Struktur  und  wenn  lxLite   den  Stub
  578. komprimiert, funktionieren sie ueberhaupt nicht mehr.
  579.  
  580.    * Watcom C & C++ v>=10.0. Schaut so aus als wuerde Watcom gerne Muell an
  581. die Dateien anhaengen.  Diese Dateien sind dafuer gedacht, sowohl unter DOS
  582. als auch unter OS/2 zu laufen und haben ebenfalls eine seltsame Struktur.
  583.  
  584.    * ZIPBRAND v1.11.  Es  ueberprueft,  ob sein .EXE-File veraendert wurde,
  585. vermutet einen Virus und will dann nicht mehr laufen [Ergaenzung des Ueber-
  586. setzers].
  587.  
  588.    *  InterCom.
  589.  
  590.  
  591. 8. Den Autor kontaktieren
  592. -------------------------
  593.  
  594. Via Email bin unter folgenden Adressen erreichbar:
  595.  
  596. FIDOnet:  2:5030/84.5 (ist mir am Liebsten)
  597. Internet: bit@freya.etu.ru
  598.  
  599. Enjoy,
  600.  _\ndy
  601.  
  602. 9. Der Uebersetzer
  603. -----------------
  604.  
  605. Ich war von Andys Programm  so  begeistert,  dass ich ihm spontan angeboten
  606. habe,  fuer ihn die Dokumentation der Version 1.01  ins Deutsche  zu ueber-
  607. setzen.  Manches  klingt  etwas holprig,  aber  erstens mache  ich  das nur
  608. hobbymaessig, zweitens bin ich kein professioneller Programmierer. Aber ich
  609. hoffe,  es hilft trotzdem etwas.  Die Uebersetzung zu 1.1.5 ist bereits ein
  610. kleines bisschen  weniger holprig und enthaelt  etwa  60 Tippfehler weniger
  611. als die zu 1.0.1.
  612.  
  613. Via  Email bin unter folgenden  Adressen  erreichbar  (obwohl  das ziemlich
  614. sinnlos ist, da ich ausser der Uebersetzung nichts beigesteuert habe):
  615.  
  616. FIDOnet:  Herwig Bauernfeind, 2:312/5.35 (ist auch mir am Liebsten)
  617. InterNet: H_BFD@fidonet.at (funktioniert zur Zeit aber nicht so gut)
  618.  
  619.